package cn.edu.swu.miniwebsvr.handler;

import cn.edu.swu.miniwebsvr.core.Handler;
import cn.edu.swu.miniwebsvr.core.Parameter;
import java.io.OutputStream;
import java.io.PrintWriter;
import java.nio.charset.StandardCharsets;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;

public class TimeHandler implements Handler {
    @Override
    public void handle(Parameter request, OutputStream response) {
        // 使用指定UTF-8编码的PrintWriter，避免中文乱码
        PrintWriter writer = new PrintWriter(response,true,StandardCharsets.UTF_8);
        //获取当前时间并格式化
        String currentTime = LocalDateTime.now().format(
                DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
        //构建响应体内容（HTML格式）
        String content = "<!DOCTYPE html>\r\n" +
                "<html>\r\n" +
                "<head>\r\n" +
                "  <meta charset=\"UTF-8\">\r\n" +
                "  <title>Server Time</title>\r\n" +
                "</head>\r\n" +
                "<body>\r\n" +
                "<h1>MiniWebSvr Current Time</h1>" +
                "<p>Server Time: <strong>" + currentTime +
                "</strong></p>\r\n"+
                "</body>\r\n" +
                "</html>";

        // TODO: [222024321072055/苏雨征] 构造完整的 HTTP 响应头和响应体
        // 1. 响应行（HTTP版本 + 状态码 + 状态描述）
        writer.println("HTTP/1.1 200 OK");
        // 2. 响应头（必须包含Content-Type和Content-Length）
        // 指定内容类型为HTML，字符集UTF-8（与响应体编码一致）
        writer.println("Content-Type: text/html; charset=UTF-8");
        // 计算内容长度（基于UTF-8编码的字节数，确保客户端正确接收）
        int contentLength = content.getBytes(StandardCharsets.UTF_8).length;
        writer.println("Content-Length: " + contentLength);
        // 告知客户端响应完成后关闭连接
        writer.println("Connection: close");

        writer.println();
        writer.println(content);
        writer.flush();
    }
}
